/*
题目描述：把字符串转换成整数
方法：
注意特殊边界情况
 */
public class E67 {

    public static void main(String[] args) {
        String str = "-8579";
        int res = StrToInt(str);
        if(flag == false){
            System.out.println(res);
        }
        else{
            System.out.println("Error!");
        }
    }

   static boolean  flag;
    public static int StrToInt(String str) {
        flag = false;
        //判断输入是否合法
        if (str == null || str.trim().equals("")) {
            flag = true;
            return 0;
        }
        // symbol=0,说明该数为正数;symbol=1，该数为负数;start用来区分第一位是否为符号位
        int symbol = 0;
        int start = 0;
        char[] chars = str.trim().toCharArray();
        if (chars[0] == '+') {
            start = 1;
        } else if (chars[0] == '-') {
            start = 1;
            symbol = 1;
        }
        int result = 0;
        for (int i = start; i < chars.length; i++) {
            if (chars[i] > '9' || chars[i] < '0') {
                flag = true;
                return 0;
            }
            int sum= result * 10 + (int) (chars[i] - '0');

            //检查溢出情况！！！
            if((sum-(int) (chars[i] - '0'))/10!=result){
                flag=true;
                return 0;
            }
            result=result * 10 + (int) (chars[i] - '0');
        }
        // 注意，当value=-2147483648时，value=-value
        result = (int) Math.pow(-1, symbol) * result;
        return result;
    }
}
